using System;
using System.Collections.Generic;
using System.Text;

namespace Horizon
{
    [Serializable]
    public class Holding
    {
        string locationValue, // Library name
            collectionValue,  // Fiction
            callNumberValue,  // F B368
            statusValue,      // Checked-in
            pubDateValue,
            formatValue,      // DVD, book, etc.
            dueDateValue,     //
            checkOutDateValue,
            isbnValue,        // 0451452615
            smallImageValue,  // URL
            mediumImageValue, // URL
            largeImageValue,  // URL
            keyValue,         // 80496  ???
            barCodeValue,     // Book's unique ID from barcode (33020001242675)

            titleValue,       // Bored of the rings : a parody of J.R.R. Tolkien's The Lord of the rings / by Henry N. Beard and Douglas C. Kenney.
            linkValue,        // full=3100001~!80496~!0      >>Perhaps how to retrieve full book info??
            authorValue,      // Beard, Henry N.
            publisherValue;   // New York : ROC, 1993, c1969.

        private Patron patronValue;

        #region "Public Properties"

        /// <summary>
        /// Patron to whom this holding is checked out
        /// </summary>
        public Patron Patron
        {
            get { return patronValue; }
            set { patronValue = value; }
        }

        /// <summary>
        /// Barcode identifying this holding
        /// </summary>
        public string BarCode
        {
            get { return barCodeValue; }
            set { barCodeValue = value; }
        }

        /// <summary>
        /// Publication date
        /// </summary>
        public string PubDate
        {
            get { return pubDateValue; }
            set { pubDateValue = value; }
        }

        /// <summary>
        /// Format of the holding (book, compact disc, etc.)
        /// </summary>
        public string Format
        {
            get { return formatValue; }
            set { formatValue = value; }
        }

        /// <summary>
        /// Date this holding was checked out (typically only shown if checked out by current user)
        /// </summary>
        public string CheckOutDate
        {
            get { return checkOutDateValue; }
            set { checkOutDateValue = value; }
        }

        /// <summary>
        /// Date that this holding is due back to the library
        /// </summary>
        public string DueDate
        {
            get { return dueDateValue; }
            set { dueDateValue = value; }
        }

        /// <summary>
        /// Link to further information on this holding
        /// (Basic search results have minimal information)
        /// </summary>
        public string Link
        {
            get { return linkValue; }
            set { linkValue = value; }
        }

        /// <summary>
        /// Unique identifier for this holding (database key rather than displayed barcode)
        /// </summary>
        public string Key
        {
            get { return keyValue; }
            set { keyValue = value; }
        }

        /// <summary>
        /// URL pointing to large cover image
        /// </summary>
        public string LargeImage
        {
            get { return largeImageValue; }
            set { largeImageValue = value; }
        }

        /// <summary>
        /// URL pointing to small cover image
        /// </summary>
        public string SmallImage
        {
            get { return smallImageValue; }
            set { smallImageValue = value; }
        }

        /// <summary>
        /// Library location (possibly branch) where holding is available
        /// </summary>
        public string Location
        {
            get { return locationValue; }
            set { locationValue = value; }
        }

        /// <summary>
        /// Collection containing this holding (Juvenile, Young Adult, Fiction, etc.)
        /// </summary>
        public string Collection
        {
            get { return collectionValue; }
            set { collectionValue = value; }
        }

        /// <summary>
        /// Status of this holding (checked out, lost, etc.)
        /// </summary>
        public string Status
        {
            get { return statusValue; }
            set { statusValue = value; }
        }

        /// <summary>
        /// Publisher of this holding
        /// </summary>
        public string Publisher
        {
            get { return publisherValue; }
            set { publisherValue = value; }
        }

        // Author of this holding (currently only shows first author)
        public string Author
        {
            get { return authorValue; }
            set { authorValue = value; }
        }

        /// <summary>
        /// Library call number for this holding
        /// </summary>
        public string CallNumber
        {
            get { return callNumberValue; }
            set { callNumberValue = value; }
        }

        /// <summary>
        /// International Standard Book Number assigned to this holding
        /// </summary>
        public string ISBN
        {
            get { return isbnValue; }
            set { isbnValue = value; }
        }

        /// <summary>
        /// Title of this holding
        /// </summary>
        public string Title
        {
            get { return titleValue; }
            set { titleValue = value; }
        }

        /// <summary>
        /// URL pointing to medium cover image
        /// </summary>
        public string MediumImage
        {
            get { return mediumImageValue; }
            set { mediumImageValue = value; }
        }
        #endregion
    }
}
